﻿// Выполняет код, когда документ полностью загружен.
$(document).ready(function() {
    var form = $('#upload-files');          // Форма загрузки.
    var messages = $('#messages');          // Область уведомлений.
    var list = $('#file-list');             // Список уже загруженных файлов.

    // Настраиваем MultiFile.
    $('.multi-file-upload').MultiFile({
        max: 5,     // Количество загружаемых за раз файлов.
        STRING: {   // Перевод строк. Можно вставлять html-код (картинки, например).
            remove: 'Удалить',
            selected: 'Выбран: $file',
            denied: 'Недопустимое расширение: $ext!',
            duplicate: 'Этот файл уже выбран:\n$file!'
        }
    });

    // Настраиваем ajaxForm
    form.ajaxForm({
        iframe: true,               // Отправляем с помощью iframe.
        dataType: "json",           // Обмен ведём используя json.

        // Выполняем до отсылки файлов.
        beforeSubmit: function() {
            // Раскомментировать следующую строчку, если submit вызывается из javascript.
            //$.fn.MultiFile.disableEmpty();
            
            // Выводим сообщение о загрузке. Сюда лучше прикрутить jQuery.blockUI, но оставляю для наглядности.
            messages.html('<img src="/Content/busy.gif" /> Загружаем файл(ы)...');
        },

        // Выполняем после получения ответа об успехе.
        success: function(result) {
            // Раскомментировать следующую строчку, если submit вызывается из javascript.
            //$.fn.MultiFile.reEnableEmpty();

            // Очищаем форму загрузки файлов.
            $('.multi-file-upload').MultiFile('reset');
            
            // Очищаем сообщение о загрузке.
            messages.empty();

            // Добавляем новые загруженные файлы к общему списку загруженных файлов.
            if (result.collection.length > 0) {
                $.each(result.collection, function(i) {
                    list.append('<li>' + this + '</li>');
                });
            }
        },

        // Выполняем при ошибке.
        error: function(xhr, textStatus, errorThrown) {
            // Очищаем форму загрузки файлов.
            $('.multi-file-upload').MultiFile('reset');
            alert('Произошла ошибка при загрузке файлов: ' + errorThrown);
        }
    });
});
